home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disk User Volume 3 #11 / Commodore_Disk_User_Vol.3_11_1990_-.d64 / parser main (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  61 lines

  1. 6000 print"[147]"
  2. 6010 poke53280,14:poke646,14:poke53281,6
  3. 6020 a=a+1
  4. 6025 ifa=1thenload"parser code",8,1
  5. 7000 rem   basic parse call
  6. 7010 pa=50018:rem set pa="wdptra"
  7. 7020 mo=50065:rem set mo="more"
  8. 7030 sm=50066:rem set sm="samore"
  9. 7040 bf=50076:rem set bf="inbuff"
  10. 7050 ls=50075:rem set ls="lsbuff"
  11. 7060 ou=50040:rem set ou="verb"
  12. 7070 def fn p(x)=peek (ou+x)
  13. 7080 a$="":input a$
  14. 7090 if len (a$)=0 then goto 7130
  15. 7100 for i=1 to len (a$)
  16. 7110 : poke bf+i-1,asc (mid$(a$,i,1))
  17. 7120 next i
  18. 7130 poke ls,len (a$)
  19. 7140 poke pa,0:poke mo,0:poke sm,0
  20. 7150 sys 49152
  21. 7160 if fnp(2)>=5and fnp(22)=0and fnp(17)<>0then poke ou+22,fnp(2):poke ou+2,0
  22. 7170 sys 49161
  23. 7180 rem             print output
  24. 7190 print:print "action  :";fnp(31);"verb";fnp(0);fnp(1);"vers";fnp(2);fnp(3)
  25. 7200 for i=0 to 2
  26. 7210 print "object";chr$(49+i);" :";fnp(32+i);"n";fnp(16+i);fnp(19+i);
  27. 7220 print "a";fnp(10+i);fnp(13+i);"o";fnp(4+i);fnp(7+i)
  28. 7230 next i
  29. 7240 print "preposit:";fnp(22);fnp(23)
  30. 7250 print "say verb:";fnp(27);fnp(28)
  31. 7260 print "say prep:";fnp(29);fnp(30)
  32. 7270 print "say more:";fnp(26)
  33. 7280 print "more    :";fnp(25)
  34. 7290 print "error   :";fnp(24)
  35. 7300 if fnp(24)=0 then goto 7340
  36. 7310 print "i got stuck at ";:sys 49155
  37. 7320 print
  38. 7330 rem are all objects recognized
  39. 7340 for i=0 to 2
  40. 7350 if fnp(32+i)<>255 then goto 7410
  41. 7360 print "i don't know what a ";
  42. 7370 poke pa,3:poke pa+1,fnp(13+i)
  43. 7380 sys 49158:print " ";
  44. 7390 poke pa,2:poke pa+1,fnp(19+i)
  45. 7400 sys 49158:print " is."
  46. 7410 next i
  47. 7420 rem is the action recognized
  48. 7430 if fnp (31)<>255 then goto 7500
  49. 7440 print "[201] don't know how to ";
  50. 7450 poke pa,0:poke pa+1,fnp(1)
  51. 7460 sys 49158:print " ";
  52. 7470 poke pa,1:poke pa+1,fnp(3)
  53. 7480 sys 49158:print "."
  54. 7490 :
  55. 7500 rem all output done
  56. 7510 print
  57. 7520 if peek (mo)=0 then goto 7080
  58. 7530 print "press space for next list"
  59. 7540 get a$:if a$<>" "then 7540
  60. 7550 goto 7150
  61.